home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-09-06 | 4.4 KB | 180 lines | [TEXT/PJMM] |
- unit Editor;
- interface
- uses
- PancakeCommon;
-
- procedure MAIN (params: editParamsPtr);
-
- implementation
-
- procedure MAIN (params: editParamsPtr);
-
- procedure Write (str: string);
- begin
- WriteProc(str, params^.procs[1]);
- end;
- procedure Writeln (str: string);
- begin
- WritelnProc(str, params^.procs[2]);
- end;
- procedure WriteHand (hand: Handle);
- begin
- WriteHandProc(hand, params^.procs[3]);
- end;
- procedure ListResFile (name: string);
- begin
- ListResFileProc(name, params^.procs[4]);
- end;
- procedure SetNodeAction (action: NodeActionType);
- begin
- SetNodeActionProc(action, params^.procs[5]);
- end;
- procedure RestoreNodeAction;
- begin
- RestoreNodeActionProc(params^.procs[6]);
- end;
- procedure JumpTo (x, y: integer);
- begin
- JumpToProc(x, y, params^.procs[7]);
- end;
- procedure Out (str: string);
- begin
- OutProc(str, params^.procs[8]);
- end;
- procedure OutPtr (buf: ptr; size: longint);
- begin
- OutPtrProc(buf, size, params^.procs[9]);
- end;
- procedure Report (where: integer; str: string);
- begin
- ReportProc(where, str, params^.procs[10]);
- end;
- function GetVarPtr (which: integer): ptr;
- begin
- GetVarPtr := GetVarPtrProc(which, params^.procs[11]);
- end;
- procedure ListHand (hand: handle);
- begin
- ListHandProc(hand, params^.procs[12]);
- end;
- function ListTextFile (pathname, filename: string): OSErr;
- begin
- ListTextFile := ListTextFileProc(pathname, filename, params^.procs[13]);
- end;
- procedure LettersPrompt (prompt, possible: string; len: byte);
- begin
- LettersPromptProc(prompt, possible, len, params^.procs[14]);
- end;
- procedure PasswordPrompt (prompt, possible: string; len: byte);
- begin
- PasswordPromptProc(prompt, possible, len, params^.procs[15]);
- end;
- procedure NumbersPrompt (prompt, possible: string; max: longint);
- begin
- NumbersPromptProc(prompt, possible, max, params^.procs[16]);
- end;
- procedure AutoPrompt (prompt, possible: string);
- begin
- AutoPromptProc(prompt, possible, params^.procs[17]);
- end;
- procedure YesNoPrompt (prompt: string; yesDefault: boolean);
- begin
- YesNoPromptProc(prompt, yesDefault, params^.procs[18]);
- end;
- procedure DatePrompt (prompt: string);
- begin
- DatePromptProc(prompt, params^.procs[19]);
- end;
- procedure PhonePrompt (prompt: string);
- begin
- PhonePromptProc(prompt, params^.procs[20]);
- end;
- procedure ClrScr;
- begin
- ClrScrProc(params^.procs[21]);
- end;
- function ReplacePercents (str: string; replaceProc: procPtr; user: userRecPtr): string;
- begin
- ReplacePercents := ReplacePercentsProc(str, replaceProc, user, params^.procs[22]);
- end;
- function HasAccess (acs: string): boolean;
- begin
- HasAccess := HasAccessProc(acs, params^.procs[23]);
- end;
- procedure SendFile (protocol: char; path, filename: string);
- begin
- SendFileProc(protocol, path, filename, params^.procs[24]);
- end;
- procedure ReceiveFile (protocol: char; path, filename: string; theRout: ProcPtr);
- begin
- ReceiveFileProc(protocol, path, filename, params^.procs[25]);
- end;
-
- procedure DisposeExtern;
- begin
- with params^ do
- if privates <> nil then
- begin
- DisposeHandle(handle(privates));
- privates := nil;
- RestoreNodeAction;
- end;
- end;
-
- procedure IdleExtern;
- begin
- with params^, privates^^ do
- begin
- case stage of
- Open:
- begin
- Writeln('Hey, this is an external, neato!');
- Write(Return);
- LettersPrompt('Enter some text: ', PossPrintable, 50);
- stage := succ(stage);
- end;
- Quest:
- begin
- Writeln(concat(Return, 'You said "', curAnswer^, '"'));
- stage := succ(stage);
- end;
- Exit:
- begin
- DisposeExtern;
- end;
- end;
- end;
- end;
-
- procedure InitExtern;
- begin
- with params^ do
- begin
- privates := privatesHand(NewHandleClear(SizeOf(privatesRec)));
- HLockHi(handle(privates));
- with privates^^ do
- begin
- curAnswer := ptr2str(GetVarPtr(vCurAnswer));
- curCommand := ptr2str(GetVarPtr(vCurCommand));
- curParams := ptr2str(GetVarPtr(vCurParams));
- numParams := ptr2int(GetVarPtr(vNumParams));
- thisUser := ptr2userRec(GetVarPtr(vThisUser));
- end;
- end;
- end;
-
- begin
- if (params^.message <> DisposeGlobal) and (params^.privates = nil) then
- InitExtern;
- case params^.message of
- Idle:
- IdleExtern;
- KeyPressed:
- ;
- DisposeExt:
- DisposeExtern;
- DisposeGlobal:
- params^.globals := nil;
- end;
- end;
- end.